In reverberation environments, a listener will perceive the sound directly from the sound source and reflections of this sound off of objects in that environment. In most scenarios, the total sound heard will include a direct (non-reverberated) component and a reverberated component. Rarely, will there only be a direct sound or only a reverberated sound.
In many cases, the original sound is stored at its maximum amplitude (quantized to 16-bits in the case of the CD standard 16-bits PCM). As part of the original sound's processing, it is multiplied by gain controls in the form of volume or gain envelopes that only range in value from 0 to 1 and therefore act as an attenuation factor. The attenuation factor only reduces the sound, since amplification of the original sound could result in overflow. Not only is this overflow not desired, restricting the gain controls to only be able to attenuate simplifies the hardware. In such hardware, a reverberation factor is applied to this gain modified version of the original sound to control its contribution to a reverberation filter. The input data into the reverberation filter can therefore be expressed as the equation:INPUT TO REVERB FILTER=(ORIGINAL SOUND*GAIN)*REVERB FACTOR
Thus, the input to the reverberation filter is necessarily a second attenuated version of the original sound, assuming the reverberation factor is also restricted to not being capable of amplification (e.g. values ranging from 0-1).
The gain modified, or first attenuated, version, of the original sound can be thought of as the “dry” component of the sound (realized by the equation: original sound*gain), while the output of the reverberation filter, which is given the second attenuated version (realized by the equation: dry component* reverberation factor) as its input, is referred to as the “wet” component of the sound. In most real-life environments, the reflected sound represented by the wet component will be less than the non-reflected direct sound represented by the dry component. It is desirable, however, to provide the ability to create reverberation environments that contain more wet than dry sound.
Conventional sound processors lack the ability to allow more of a wet sound component than a dry sound component. One possible solution is to allow for a reverberation factor greater than 1, i.e., allow amplification of the dry component, and provide this as input to the reverberation filter. This solution, however, has many flaws. If much more wet sound was wanted over dry sound, and the gain was set very low, the reverb factor would need to be arbitrarily large. Just how large should be allowed is not apparent. In the extreme case where no dry component is wanted, which is achieved by having a 0 gain, no matter how high the reverberation factor, there could be no purely wet sound.
An alternative solution would be to modify the above equation for the input into the reverb filter logic as follows:INPUT TO REVERB FILTER=ORIGINAL SOUND*REVERB FACTOR
In this solution, the dry and wet components would essentially be modified independently, each with their own gain factor (the dry would be Original*Gain and the wet would be Original*Reverb Factor).
This implementation, however, has several drawbacks. One downside is the extra computation needed by the programmer (whether actually done in software or mentally). For instance, if one wished to control the volume of the original sound, one could set the gain to some factor, say 0.5. Without any reverb, the output sound (purely dry) would be one-half the amplitude of the original sound. If the amount wanted to be given to the reverb filter were one-half of the dry component, the reverb factor would have to be set at 0.25, or one-half of the gain. The disadvantage to this is that a programmer of a sound processing application must be aware of this interdependency between the gain and the reverberation factor when wanting to control the amount of dry and wet sound components. In this respect, conventional sound processing techniques are better because the programmer need not be aware of this interdependency between the gain and reverberation factor when wanting to control the amount of dry and wet sound components. If the programmer wants the amount provided to the reverb filter to be one-half of the dry component, he need only set the reverb factor to one-half.
Another, more significant drawback with the above implementation deals with gain smoothing. In some sound processors that process sound frames having multiple samples each, the gain values can only change at every frame. When a change occurs, the gain at one frame is smoothly transitioned over all the samples to the new gain value of the next frame. If the amount given to the reverberation filter were to be smoothed as well, separate smoothing logic would be needed for both the gain and reverb factor in this implementation.
Accordingly, what is needed is an improved method and system for controlling the dry and wet components of a sound. The present invention addresses such a need.